package com.wang.jmonkey.modules.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wang.jmonkey.modules.system.model.entity.SystemAclEntity;
import com.wang.jmonkey.modules.system.model.enums.SystemAclPrincipalTypeEnum;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;

/**
 * 资源权限信息表(SystemAcl)表数据库访问层
 *
 * @author HeJiawang
 * @since 2021-05-21 21:43:56
 */
public interface SystemAclMapper extends BaseMapper<SystemAclEntity> {

    /**
     * 删除资源权限信息
     * @param resourceId 资源id
     * @return 删除个数
     */
    int deleteByResourceId(@Param("resourceId") Serializable resourceId);

    /**
     * 删除数据主体的权限信息
     * @param principalId 数据主体id
     * @Param type 数据主体类型
     * @return true 删除成功
     */
    int deleteByPrincipal(@Param("principalType") SystemAclPrincipalTypeEnum principalType, @Param("principalId") Serializable principalId);

    /**
     * 获取角色资源权限id集合
     * @param principalId 权限主体id
     * @param type 权限主体类型
     * @return 资源id集合
     */
    List<Long> listAcl(@Param("principalId") Long principalId, @Param("type") SystemAclPrincipalTypeEnum type);

    /**
     * 获取用户资源权限id集合
     * @param userId 用户id
     * @return 资源id集合
     */
    List<Long> listUserAcl(@Param("userId") Long userId);
}
